package extend.db.base;

import java.util.List;
import java.util.Map;

/**
 * 实体类
 *<B>说明：</B>
 *<pre>
 *  用于单库单表数据库操作
 *</pre>
 *<B>示例：</B>
 *<pre>
 *  略
 *</pre>
 *<B>日志：</B>
 *<pre>
 *  略
 *</pre>
 *<B>注意事项：</B>
 *<pre>
 *  略
 *</pre>
 */
public class Dao extends BaseDao
{
    public Dao(){};

    public static Dao make (String tableName)
    {
        return new Dao(tableName);
    }

    public static Dao make (String tableName,String dbKey)
    {
        return new Dao(tableName,dbKey);
    }

    public Dao(String tableName)
    {
        super(tableName);
    }

    public Dao(String tableName,String dbKey)
    {
        super(tableName,dbKey);
    }

    /**
     * 添加数据行总接口
     *<B>说明：</B>
     *<pre>
     *  可以重写，以便实现分表，分库，等功能
     *</pre>
     * @param query 查询命令
     * @return Query
     */
    public Query addInternal(Query query)
    {

        query.toUpdate(true);
        int affected = this.executeCommand(query);
        query.setResult(affected);

        return query;
    }

    /**
     * 修改记录总接口
     *<B>说明：</B>
     *<pre>
     *  可以重写，以便实现分表，分库，等功能
     *</pre>
     * @param query 查询命令
     * @return Query
     */
    public Query updateInternal(Query query)
    {
        query.toUpdate(true);
        int affected = this.executeCommand(query);
        query.setResult(affected);

        return query;
    }

    /**
     * 修改记录总接口
     *<B>说明：</B>
     *<pre>
     *  可以重写，以便实现分表，分库，等功能
     *</pre>
     * @param query 查询命令
     * @return Query
     */
    public Query deleteInternal(Query query)
    {
        query.toUpdate(true);
        int affected = this.executeCommand(query);
        query.setResult(affected);

        return query;
    }

    /**
     * 修改记录总接口
     *<B>说明：</B>
     *<pre>
     *  可以重写，以便实现分表，分库，等功能
     *</pre>
     * @param query 查询命令
     * @return Query
     */
    public Query queryInternal(Query query)
    {
        query.toUpdate(false);
        List<Map<String,Object>> rows = this.queryCommand(query);
        query.setResult(rows);

        return query;
    }
}
